<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    // fn();
</script>
<script>
    // - 变量声明提升
    // - 通过var定义(声明)的变量, 在定义语句之前就可以访问到
    // - 值: undefined
    // {
    //     // console.log(a);// undefined
    //     // var a = 1;
    //
    //     // 提升，上方代码会被执行为：
    //     var a;
    //     console.log(a);// undefined
    //     a = 1;
    // }



    // - 函数声明提升
    // - 通过function声明的函数, 在之前就可以直接调用
    // - 值: 函数定义(对象)
    // {
    //     fn();
    //     function fn(){
    //         console.log("fn");
    //     }
    //     fn();
    // }

    // * JS提升是以script为界限的（一段一段的进行预解析）
    // function fn(){
    //     console.log("fn");
    // }



    var a = 10;
    var a;
    console.log(a)

    // 解析为：
    // var a ;
    // var a;
    // a = 10;
    // console.log(a)
</script>
<script>
    // fn();
</script>
</html>